【项目实战】SpringBoot项目在外部tomcat环境下部署(如何基于SpringBoot将项目打包成war包,并且部署到tomcat中)

您所在的位置:网站首页 tomcat部署多个war包 包冲突 【项目实战】SpringBoot项目在外部tomcat环境下部署(如何基于SpringBoot将项目打包成war包,并且部署到tomcat中)

【项目实战】SpringBoot项目在外部tomcat环境下部署(如何基于SpringBoot将项目打包成war包,并且部署到tomcat中)

2023-06-20 01:51| 来源: 网络整理| 查看: 265

一、背景讲述,为什么需要支持这种场景?

在实际应用中,通过各种构建工具如Maven或Gradle来生成JAR文件或WAR文件,以便方便地进行打包和部署。SpringBoot默认提供内嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以启动。但是,有时候更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的包,而不是jar格式的包。

二、 Jar包和War包傻傻分不清楚 2.1 Jar包介绍

别人写好的类,并且打包好了,你可以用这些jar包。引入到你的项目中,然后你就可以直接使用这些jar包中的类还有属性了,这类jar包一般放在lib目录下。

Java Archive,Java 归档文件,JAR文件(Java Archive)

通常包含一个或多个Java类文件和相关资源文件,如图像、声音等。

它们主要用于将Java类库、应用程序和插件打包并分发给其他开发人员和使用者。

与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。

JavaSE程序可以打包成Jar包

JAR 文件格式,以流行的 ZIP 文件格式为基础。

与ZIP文件的区别,Jar可用于:

压缩和发布部署和封装库、组件和插件程序被编译器和JVM工具直接使用

JAR中包含特殊文件:manifests 和部署描述符,作用:指示工具,如何处理特定的JAR

2.2 War包介绍

war包是javaweb程序打的包,一个war包可以理解为一个web项目,里面是项目的所有东西

WAR文件(Web Archive)一种特殊类型的JAR文件,专门用于将Web应用程序打包并部署到Java Web服务器上。Sun提出的一种web应用程序格式,可以直接运行的web模块与JAR类似,是很多文件的压缩包。使用场景:用于网站中,打成包部署到容器中Tomcat中的WAR包:将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。WAR包中的文件按照一定目录结构来组织。WAR文件必须有一个名为Web-INF的目录,其中包含Web应用程序的配置文件和类文件。war包里面包含什么内容呢?WAR文件通常包含, 代码编译成的class文件依赖的包配置文件所有的网站页面、Web资源文件(JSP、Servlet、HTML、CSS、JS文件) 三、如何部署war包到Tomcat(将war文件放到webapps文件夹中)

1)使用场景:开发打war包给测试,比如说,现在测试拿到一个war包,名字叫test.war。 2) 打开Tomcat的安装路径 ,假设是“D:\Tomcat\apache-tomcat-7.0.68” 3)进入到 webapps文件夹中,把 test.war放到 webapps文件夹。 3)启动Tomcat。

如果不需要更改配置文件:到这一步就可以了。

在浏览器输入“http:localhost:tomcat_port/test即可打开test项目的 index.jsp页面(port是自己的端口号)。 如果test项目没有index.jsp页面,那就需要打开其他相应的页面。

四、基于SpringBoot将项目打包成war包,并且部署到Tomcat中具体步骤

SpringBoot同样提供了解决方案,只需要简单的几步更改就可以了,这里提供maven项目的解决方法:

主要步骤: (1)修改启动类,继承SpringBootServletInitializer,重写configure方法 (2)修改pom文件。增加package标签以及新增dependencies

4.1 步骤1:继承SpringBootServletInitializer,并重写configure方法

将项目的启动类Application.java,继承SpringBootServletInitializer,并重写configure方法

@SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } } 4.2 步骤2:增加package标签

步骤2: 在pom.xml文件中,project下面增加package标签

war 4.3 步骤3:增加Tomcat依赖

步骤3:在pom.xml文件中,dependencies下面添加

org.springframework.boot spring-boot-starter-tomcat provided

只需要以上3步就可以打包成war包,并且部署到tomcat中了。 需要注意的是,这样部署的request url,需要在端口后,加上项目的名字,才能正常访问。

SpringBoot更加强大的一点就是:即便项目是以上配置,依然可以用内嵌的tomcat来调试,启动命令和以前没变,还是:mvn spring-boot:run。

如果需要在StringBoot中加上request前缀,需要在application.properties中添加server.contextPath=/prefix/即可。 其中prefix为前缀名。这个前缀会在war包中失效,取而代之的是war包名称,如果war包名称和prefix相同的话,那么调试环境和正式部署环境就是一个request地址了。

注意: 配置完过后,可能会出现无法在Idea Intellij运行报错的情况。与

public static void main(String[] args) { SpringApplication.run(Application.class, args); }

此配置出现冲突.但是不影响maven打包。

如果要在idea运行测试,建议注释之前的配置。或者打包(war)放到本地tomcat启动测试.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3